package br.lp2p.localmessage;

import java.nio.ByteBuffer;

import br.lp2p.commons.LP2PInternalMessages;

public class LocalMessageBuilder {

	public static ByteBuffer buildLList(String sharingName, int infoLevel, String field, String op, String crit){
		ByteBuffer messageBytes = ByteBuffer.allocateDirect(7 + sharingName.length() + 6 + field.length()+op.length()+crit.length());
		messageBytes.put("LP2P".getBytes());
		messageBytes.put((byte) 1);
		messageBytes.put((byte) 1); 
		messageBytes.put(LP2PInternalMessages.LP2P_LLIST);
		messageBytes.put(sharingName.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put((byte)infoLevel);
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(field.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(op.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(crit.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.flip();
		
		return messageBytes;
	}
	
	public static ByteBuffer buildLGet(String sharingName, String fileId, String offset, String size){
		ByteBuffer messageBytes = ByteBuffer.allocateDirect(7 + sharingName.length() + fileId.length() + offset.length()+size.length()+ 4 );
		messageBytes.put("LP2P".getBytes());
		messageBytes.put((byte) 1);
		messageBytes.put((byte) 1); 
		messageBytes.put(LP2PInternalMessages.LP2P_LGET);
		messageBytes.put(sharingName.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(fileId.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(offset.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(size.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.flip();
		
		return messageBytes;
	}
	
	// get updates - llistu message
	public static ByteBuffer buildLListU(String sharingName, String fileId, String offset, String size){
		ByteBuffer messageBytes = ByteBuffer.allocateDirect(7 + sharingName.length() + fileId.length() + offset.length()+size.length()+ 4 );
		messageBytes.put("LP2P".getBytes());
		messageBytes.put((byte) 1);
		messageBytes.put((byte) 1); 
		messageBytes.put(LP2PInternalMessages.LP2P_LGETU);
		messageBytes.put(sharingName.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(fileId.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(offset.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.put(size.getBytes());
		messageBytes.put((byte)LP2PInternalMessages.DELIM);
		messageBytes.flip();
				
		return messageBytes;
	}
}
